Electronic-commerce (e-commerce) has become increasingly important in today's society. People make purchases online using their personal computers (PCs), laptop PCs, Personal Digital Assistants (PDAs), cellular phones, etc. In particular, people may purchase text, icons, video, music, and other intangible content that is delivered to their mobile communication device upon request. Usually, the request for the content and the response are sent using Hypertext Transfer Protocol (HTTP).
Typically, the HTTP response is transmitted between systems implementing transfer control protocol (TCP). When an HTTP-based application writes data of the HTTP response to a TCP socket provided by an operating system using one of a range of write commands, the data is placed in a TCP send buffer for that socket, and the write command returns. In general, the fact that the write command has returned merely indicates that the data has been written to the TCP send buffer, and a returning write command does not confirm that the data has been sent to the TCP receiving stack.
Upon receipt of the data, the TCP receiver transmits one or more acknowledgments to the sender to indicate the successful receipt of the data segments. The TCP receiver sends a final acknowledgment, also referred to as the last ACK signal, to the TCP sender indicating the receipt of the final segment of data. However, the standard TCP socket Application Programmer's Interface (API) does not provide an indication of the receipt of the last ACK signal to the sending application to confirm the successful receipt of the data by the TCP receiver.
With prior technology, there is no way of telling at the HTTP level that the HTTP response has been delivered successfully to the requester, i.e., the HTTP client. HTTP typically does not include any feature to allow an HTTP client to confirm the receipt of the HTTP response with the server or a proxy that sends the HTTP response. However, where a communication carrier wishes to charge the user for the receipt of the data or content in the HTTP response, the ability to determine that the HTTP response has been delivered successfully is important for billing customers on such services correctly.
At least two potential solutions to the above problem are unsatisfactory. One solution proposes to extend HTTP to support functionalities via which the client may indicate the successful receipt of the HTTP response. Such additional functionalities would have to be successfully adopted by the relevant standard setting bodies to ensure that the future HTTP-compatible devices support the additional functionalities.
Another potential solution is to modify the TCP stack to capture the last acknowledgement of the transmission of the HTTP response, and to extend the standard TCP API to allow the TCP stack to indicate data delivery to the sending HTTP-based application. However, since most TCP stacks are shipped with an operating system, it is difficult, if not impractical, to modify the TCP stacks. Moreover, generating a separate TCP stack in addition to the TCP stacks shipped with the operating system by a service provider is time consuming as well as impractical.